1. Field of the Invention
This invention relates generally to improving operational efficiency in multiprocessor computer systems and, more particularly, to improving the efficiency of programming flash memory associated with the multiprocessor computer system.
2. Background of the Related Art
This section is intended to introduce the reader to various aspects of art which may be related to various aspects of the present invention which are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Since the introduction of the first personal computer (xe2x80x9cPCxe2x80x9d) over 20 years ago, technological advances to make PCs more useful have continued at an amazing rate. Microprocessors that control PCs have become faster and faster, with operational speeds eclipsing the gigahertz (one billion operations per second) and continuing well beyond.
Productivity has also increased tremendously because of the explosion in development of software applications. In the early days of the PC, people who could write their own programs were practically the only ones who could make productive use of their computers. Today, there are thousands and thousands of software applications ranging from games to word processors and from voice recognition to web browsers.
Not surprisingly, the increasing complexity of computers and software applications has presented technologists with some challenging obstacles along the way. One such obstacle is the continual increase in the amount of information that must be stored by a computer system. Larger, more complex applications require computers to have more and more storage capability. A short few years ago, users could scarcely conceive of how they would fill a 500 megabyte hard drive. Today, that same 500 megabyte hard drive would be insufficient for all but the most basic computer system.
A similar phenomenon has occurred with computer memory devices, such as flash memory. Flash memory is memory that is non-volatile, which means it retains the information stored in it even after power is removed. Flash memory may also be reprogrammed electronically. These features make flash memory ideally suited for storing the Basic Input/Output System of modern computer systems.
The Basic Input/Output System (or BIOS) is a low-level program that supports the operation of the most basic functions of a computer system. Amongst these functions, the BIOS controls things like which external storage media is used to boot the computer system""s operating system (or OS) as well as the fundamentals of how the computer system""s microprocessor interfaces with its supporting integrated circuit chips (sometimes referred to as the north bridge and south bridge, or, collectively, as the chipset) and system memory. The BIOS also controls things like the computer system""s power management parameters.
As previously noted, flash memory is non-volatile and can be easily reprogrammed. This functionality means that flash memory that is used to store the BIOS of a computer system or other programming can easily be reprogrammed to accommodate changes or error corrections such as bug fixes. In many cases, flash memory may be reprogrammed without even physically removing the flash chips containing the programming from the computer system.
Like hard drive storage capacity, the amount of non-volatile flash memory contained in typical computer systems has increased dramatically in recent years. This is especially true in modem multiprocessor computer systems such as many of the servers designed manufactured by the assignee of the present invention. These powerful computers may have two, four, eight or even more individual processors. A few years ago, several megabytes of flash memory would have been sufficient to store enough non-volatile programming for computer systems with one or two processors. The addition of more and more processors, however, requires increasing amounts of non-volatile flash memory to contain the associated programming. Modern computer architectures, such as the IA-64 architecture promulgated by Intel Corporation of Santa Clara Calif., have increased available flash memory capacity by 16 times compared to prior architectures.
An undesirable side effect of the dramatic increase in the amount of flash memory required in multiprocessor computer systems is that the time required to program the flash memory is dramatically increased. Thus, the computer system is unusable for an undesirably long time when the flash memory needs to be reprogrammed. Flash memory typically needs to be reprogrammed in the event of a catastrophic system failure or when a program update or error correction revision is made to the code stored in the flash memory.
In a multiprocessor computer system, one of the processors is typically designated to boot the operating system before the other processors are initialized to do useful work. Typically, the processor designated to boot the operating system is referred to as the bootstrap processor or BSP. The other processors in the system are typically designated application processors or APs. In prior computer systems, the BSP has been used to reprograms the entire flash memory of the computer system while the APs remain in a sleeping (or quiescent) state. A more efficient way to reprogram the flash memory in a multiprocessor computer system is desirable.